<html>
<head>
<title>Test Transfer</title>
<script type="text/javascript" src="../../../../dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.provide("dojox.wire.ml.tests.markup.Transfer");

dojo.require("dojo.parser");
dojo.require("doh.runner");
dojo.require("dojox.data.dom");
dojo.require("dojox.data.XmlStore");
dojo.require("dojox.wire.ml.Action");
dojo.require("dojox.wire.ml.Transfer");

dojox.wire.ml.tests.markup.Transfer = {
	source: {a: "A", b: "B", c: [
		{d: "D1", e: "E1"},
		{d: "D2", e: "E2"}
	]}
};

dojo.addOnLoad(function(){
	doh.register("dojox.wire.ml.tests.markup.Transfer", [

		function test_Transfer_attribute(t){
			dojox.wire.ml.tests.markup.Transfer.store = new dojox.data.XmlStore();
			dojox.wire.ml.tests.markup.Transfer.item = dojox.wire.ml.tests.markup.Transfer.store.newItem({tagName: "x"});
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferData");
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.a, dojox.wire.ml.tests.markup.Transfer.target.a);
		},

		function test_Transfer_path(t){
			dojox.wire.ml.tests.markup.Transfer.element = dojox.data.dom.createDocument().createElement("x");
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferXml");
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.a, dojox.wire.ml.tests.markup.Transfer.target.a);
		},

		function test_ChildWire(t){
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferComposite");
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.a, dojox.wire.ml.tests.markup.Transfer.target.c);
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.b, dojox.wire.ml.tests.markup.Transfer.target.d);
		},

		function test_ColumnWire(t){
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferTable");
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.c[0].d, dojox.wire.ml.tests.markup.Transfer.target.a[0].b);
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.c[1].e, dojox.wire.ml.tests.markup.Transfer.target.a[1].c);
		},

		function test_NodeWire(t){
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferTree");
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.c[0].d, dojox.wire.ml.tests.markup.Transfer.target.a[0].title);
			t.assertEqual(dojox.wire.ml.tests.markup.Transfer.source.c[1].e, dojox.wire.ml.tests.markup.Transfer.target.a[1].children[0].title);
		},

		function test_SegimentWire(t){
			dojox.wire.ml.tests.markup.Transfer.target = {};
			dojo.publish("transferText");
			t.assertEqual("A/B", dojox.wire.ml.tests.markup.Transfer.target.c);
		}

	]);
	doh.run();
});
</script>
</head>
<body>
<div dojoType="dojox.wire.ml.Action"
	triggerTopic="transferData">
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.source.a"
		target="dojox.wire.ml.tests.markup.Transfer.item"
		targetStore="dojox.wire.ml.tests.markup.Transfer.store"
		targetAttribute="y"></div>
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.item"
		sourceStore="dojox.wire.ml.tests.markup.Transfer.store"
		sourceAttribute="y"
		target="dojox.wire.ml.tests.markup.Transfer.target.a"></div>
</div>
<div dojoType="dojox.wire.ml.Action"
	triggerTopic="transferXml">
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.source.a"
		target="dojox.wire.ml.tests.markup.Transfer.element"
		targetPath="y/text()"></div>
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.element"
		sourcePath="y/text()"
		target="dojox.wire.ml.tests.markup.Transfer.target.a"></div>
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.source.b"
		target="dojox.wire.ml.tests.markup.Transfer.element"
		targetPath="y/@z"></div>
	<div dojoType="dojox.wire.ml.Transfer"
		source="dojox.wire.ml.tests.markup.Transfer.element"
		sourcePath="y/@z"
		target="dojox.wire.ml.tests.markup.Transfer.target.b"></div>
</div>
<div dojoType="dojox.wire.ml.Transfer"
	triggerTopic="transferComposite"
	source="dojox.wire.ml.tests.markup.Transfer.source"
	target="dojox.wire.ml.tests.markup.Transfer.target">
	<div dojoType="dojox.wire.ml.ChildWire"
		name="x"
		property="a"></div>
	<div dojoType="dojox.wire.ml.ChildWire"
		which="source"
		name="y"
		property="b"></div>
	<div dojoType="dojox.wire.ml.ChildWire"
		which="target"
		name="x"
		property="c"></div>
	<div dojoType="dojox.wire.ml.ChildWire"
		which="target"
		name="y"
		property="d"></div>
</div>
<div dojoType="dojox.wire.ml.Transfer"
	triggerTopic="transferTable"
	source="dojox.wire.ml.tests.markup.Transfer.source.c"
	target="dojox.wire.ml.tests.markup.Transfer.target.a">
	<div dojoType="dojox.wire.ml.ColumnWire"
		column="b"
		property="d"></div>
	<div dojoType="dojox.wire.ml.ColumnWire"
		column="c"
		property="e"></div>
</div>
<div dojoType="dojox.wire.ml.Transfer"
	triggerTopic="transferTree"
	source="dojox.wire.ml.tests.markup.Transfer.source.c"
	target="dojox.wire.ml.tests.markup.Transfer.target.a">
	<div dojoType="dojox.wire.ml.NodeWire"
		titleProperty="d">
		<div dojoType="dojox.wire.ml.NodeWire"
			titleProperty="e"></div>
	</div>
</div>
<div dojoType="dojox.wire.ml.Transfer"
	triggerTopic="transferText"
	source="dojox.wire.ml.tests.markup.Transfer.source"
	delimiter="/"
	target="dojox.wire.ml.tests.markup.Transfer.target.c">
	<div dojoType="dojox.wire.ml.SegmentWire"
		property="a"></div>
	<div dojoType="dojox.wire.ml.SegmentWire"
		property="b"></div>
</div>
</body>
</html>
